Treasure Island 1

Gallows(?)

Treasure

Treasure Line

Marco found a parchment describing the location of a pirate treasure chest 
buried on a deserted island.  
The parchment included a map with the following directions:

Walk from the gallows to the coconut tree, counting the number of steps.  
At the coconut tree, turn 90˚ to the right.  Walk the same number of steps 
and put a spike in the ground.  Return to the gallows and walk to the 
banana tree, counting your steps.  At the banana tree turn 90˚ to the left, 
walk the same number of steps, and put another spike in the ground.  
The treasure is halfway between the spikes.

Marco found the island and the two trees, but could find no trace of the 
gallows or the spikes, as both had presumably rotted away.  He began 
to dig at random, but soon gave up as the island was so large. 

How could he find the exact location of the treasure?

Parchment directions

(-6, 5)

(8, 1)

A = (-6, 5)
B = (8, 1)
G = (4.008017311361251, 4.413433745584915)
a = Segment(G, B)
b = Segment(G, A)
Spike_1 = Rotate(G, 90*°, A)
c = Segment(A, Spike_1)
d = OrthogonalLine(B, a)
e = Circle(B, G)
Spike_2 = Intersect(e, d, 2)
f = Segment(B, Spike_2)
g = Segment(Spike_2, Spike_1)
Treasure = Midpoint(g)
α = Angle(G, A, Spike_1)
β = Angle(Spike_2, B, G)
h = Circle(A, 2)
k = Circle(B, 1)
j = Line(A, i)
l = Line(B, i)
D = Intersect(h, j, 1)
E = Intersect(k, l, 1)
F = Point(i)
n = Line(G, m)
p = Circle(G, 1)
G_1 = Intersect(p, n, 2)
C = Intersect(b, a)
o = false
q = false
r = true
H = (-8, 5)
s = Circle(H, A)
I = Point(s)

Tool: Complex Multiplication (command ComplexMultiplication)
Select Points at O(0, 0), P(0, -1), A and B for A*B
Input: O, P, A, B
Output: j, AB

c = Circle(O, A)
d = Circle(O, B)
D = Intersect(c, xAxis, 2)
b = Segment(O, A)
f = Segment(O, B)
G = Intersect(d, xAxis, 1)
g = Circle(D, P, G)
E = Intersect(g, yAxis, 2)
e = Circle(O, E)
a, h = AngularBisector(f, b)
D' = Mirror(D, a)
i = Ray(O, D')
AB = Intersect(e, i, 1)
j = Segment(O, AB)

Tool: Complex Division (command ComplexDivision)
Select Points O(0, 0), P(0, -1), A and B for A/B
Input: O, P, A, B
Output: l, C

A/B

c = Circle(O, A)
d = Circle(O, B)
D = Intersect(c, xAxis, 2)
e = AngularBisector(A, O, D)
B' = Mirror(B, e)
f = Ray(O, B')
E = Intersect(c, yAxis, 1)
F = Intersect(d, xAxis, 1)
g = Segment(F, E)
G = Midpoint(g)
h = OrthogonalLine(G, g)
i = Segment(P, F)
H = Midpoint(i)
j = OrthogonalLine(H, i)
I = Intersect(h, j)
k = Circle(I, F)
J = Intersect(k, xAxis, 2)
p = Circle(O, J)
C = Intersect(p, f)
l = Segment(O, C)

Tool: Complex Addition (command ComplexAddition)
Select Points O(0, 0), A and B for A + B
Input: O, A, B
Output: C', c

A + B

u = Vector(O, B)
C' = Translate(A, u)
c = Segment(O, C')

Tool: Complex Subtraction (command ComplexSubtraction)
Select Points O(0, 0), A and B for A - B
Input: O, A, B
Output: c, A'

A - B

u = Vector(B, O)
A'_1 = Translate(A, u)
A' = Translate(A, u)
c = Segment(O, A')